<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>千位分隔符</title>
  </head>
  <body></body>
  <script>
    // 标题
    // 千位分隔符
    // 题目描述
    // 问题背景：​
    // 在金融、会计等领域，经常需要将大数字以易读的方式展示。千位分隔符是一种常用的格式化方法，它在每三位数字之间插入一个分隔符（通常是逗号），使得大数字更容易阅读和理解。​
    // 问题描述：​
    // 编写一个JavaScript函数，该函数接受一个数字（可能是整数或浮点数）作为输入，返回一个使用千位分隔符格式化后的字符串。​
    // 输入输出要求：​
    // 输入：一个数字（可以是整数或浮点数）。​
    // 输出：一个字符串，表示添加了千位分隔符后的数字。​
    // 示例：​
    // 输入：1234567.89​
    // 输出："1,234,567.89"​
    // 输入：-9876543210​
    // 输出："-9,876,543,210"​
    // 输入：1000000​
    // 输出："1,000,000"​
    // 注意事项：​
    // 函数应该能够正确处理正数和负数。​
    // 对于小数部分，不需要添加千位分隔符。
    function formatNumber(num) {
      // 将数字转换为字符串，避免浮点数精度问题
      let numStr = num.toString()
      // 处理负数，负号在前面
      let isNegative = numStr[0] === '-'
      if (isNegative) {
        numStr = numStr.slice(1) // 移除负号
      }
      // 分离整数部分和小数部分
      let [integer, decimal] = numStr.split('.')
      // 使用正则表达式为整数部分添加千位分隔符
      integer = integer.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
      // 如果有小数部分，拼接上去
      if (decimal) {
        return (isNegative ? '-' : '') + integer + '.' + decimal
      }
      return (isNegative ? '-' : '') + integer
    }
    console.log(formatNumber(1234567.89))
    console.log(formatNumber(-9876543210))
    console.log(formatNumber(1000000))
  </script>
</html>
